Device resource management during video streaming and playback

ABSTRACT

Techniques described herein include evaluation and management of device hardware, software, and network resources during streaming, downloading, or playback of video resources on client devices from remote locations. Certain aspects relate to evaluating the current resources available at a client device, such as memory, processing capacity, device battery status, network availability and/or network data quotas, in view of a video resource request. Based on the evaluation of the client device&#39;s resources, and estimations of the effects that video streaming/downloading and playback may have on the client device&#39;s resources, the client device may control, customize, and/or alter the retrieval or playback of requested video resources.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. patent application Ser. No.15/857,240, filed Dec. 28, 2017, entitled “DEVICE RESOURCE MANAGEMENTDURING VIDEO STREAMING AND PLAYBACK,” the disclosure of which is herebyincorporated by reference in its entirety for all purposes.

TECHNICAL FIELD

The present disclosure relates to apparatuses and methods of requesting,transmitting, and executing video content on client devices. Inparticular, the disclosure relates to evaluating and managing of devicehardware, software, and network resources, in response to requests fordownloading and/or streaming video resources to client devices overvarious computer and network architectures.

BACKGROUND

Technologies for streaming and downloading video resources from back-endservers to client devices are ubiquitous and indispensable tools used inindustries ranging from digital entertainment, gaming, online education,and business applications. A variety of computing systems and networkarchitectures may be implemented to support video streaming,downloading, and playback, including Internet-based systems, satelliteor cable communication systems, cellular/mobile network communications,etc. Client devices, such as business or residential based appliances(e.g., computers, televisions, etc.) as well as mobile devices of users,may retrieve video resources through a variety of front-end applicationsthat may leverage any of the various computer and network architecturesdescribed herein, or any combination of such architectures. Often a usermay initiate the retrieval of a particular video resource, eitherstreaming for immediate viewing, or downloading for playback at a latertime, with the user not ever knowing from which back-end servers thevideo will be retrieved, or over which networks the video will betransmitted.

When a client device requests a video from a back-end server, either forimmediate streaming or downloading for later playback, the client devicemight not be aware of all of the characteristics of the requested video,such as the size, length, quality, storage location, and network accesspath of the requested video. Similarly, the back-end server from whichthe video has been requested might not be aware of certain operatingcharacteristics or the current settings or status of the client device,such as the device's current allocation of hardware resources, softwareresources, network usage, and the like. Furthermore, during the processof streaming a video from a remote location to a client device, thecharacteristic of the video streaming process (e.g., storage location,streaming bit rate, video size/quality, networks used for streaming,etc.) may potentially change. For all of these reasons, the resourcemanagement and video retrieval/streaming determinations made at theclient device and/or the remote storage location of the requested videomay not correspond to the needs and priorities of the users and devicesinvolved.

SUMMARY

Various techniques are described herein for evaluating and managingdevice hardware, software, and network resources during streaming and/ordownloading of video resources from remote network locations to clientdevices. For example, certain aspects of the disclosure relate toevaluation of the current resources available at a client device, suchas memory, processing capacity, device battery status, networkavailability and/or data quotas, in view of a video resource request.Based on the evaluation of the client device's resources, and anestimation of the effects that video streaming/downloading and playbackmay have on the client device's resources, the client device maycontrol, customize, and/or alter the retrieval or playback of requestedvideo resources.

In accordance with certain embodiments described herein, requests fromclient devices for video resources may be evaluated and controlled basedon data allocation limits associated with the combination of therequesting entity and the communication network over which the requestedvide may be transmitted, as well as the characteristics of the requestedvideo resources. For example, a client device may initially request aparticular video resource from a remote video content library. Inresponse to the request, the characteristics of the particular videoresource may be determined, and an amount of data required totransmit/receive the particular video resource from the remote locationto the client device may be computed. Additionally, a data allocationlimit may be determined based on the combination of the entityassociated with the video request (e.g., a user, a client device, ahousehold network/account, etc.), as well as the communicationnetwork(s) associated with the request. The retrieval and/or playback ofthe requested video resource may be controlled based on the determineddata allocation limit, with respect to the amount of data required toreceive the particular video resource. For example, the retrieval of arequested video may be prevented, allowed, or may cause the presentationof a user notification, based on a comparison of the amount of datarequired to receive the particular video resource to the determined dataallocation limit. In certain embodiments, subsequent comparisons andmodifications may be performed during an ongoing video streaming andplayback process, for example, based on detected changes to the networkover which the video is streaming.

Additional aspects described herein relate to evaluating and controllingrequests from client devices for video resources based on the currenthardware resource status of the client device. For example, a clientdevice may initially request a particular video resource from a remotevideo content library. In response to the request, one or more currentstatus data of the client device may be determined, such as the statusof the device battery, memory, processors, software applications, devicedisplay settings, and/or access networks, etc. Additionally, thecharacteristics of the requested video resource may be determined, andcalculations may be performed regarding how the streaming/downloadingand playing the requested video resource may affect the current statusthe client device resources. By way of example, the client device mayprevent a video from streaming and/or cause the presentation of a usernotification in response to a determination that the client device hasinsufficient battery life to play the entire video. In otherembodiments, certain device settings and/or video streaming behaviorsmay be customized based on the evaluation of the device's battery life.In further examples, the evaluations and estimations performed mayleverage additional data, such as calendar or social media data from theuser, as well as other user data sources, and the video downloading,streaming, and playback processes may be further controlled based onthese additional factors.

Further areas of applicability of the present disclosure will becomeapparent from the detailed description provided hereinafter. It shouldbe understood that the detailed description and specific examples, whileindicating various embodiments, are intended for purposes ofillustration only and are not intended to necessarily limit the scope ofthe disclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

A further understanding of the nature and advantages of variousembodiments may be realized by reference to the following figures inconjunction with the description of certain embodiments presentedherein. However, the appended figures should not be seen as limiting ordefining the present disclosure.

FIG. 1 is a block diagram illustrating an example of a video contentdistribution network, in accordance with certain embodiments of thepresent disclosure.

FIG. 2 is a block diagram illustrating a computer server and computingenvironment within a video distribution network, in accordance withcertain embodiments of the present disclosure.

FIG. 3 illustrates a diagram of a satellite television distributionsystem, in accordance with certain embodiments of the presentdisclosure.

FIG. 4 illustrates a simplified diagram of a set-top box televisionreceiver, in accordance with certain embodiments of the presentdisclosure.

FIG. 5 is an illustration of an embodiment of a computing device thatmay perform the methods provided by various embodiments, in accordancewith certain embodiments of the present disclosure.

FIG. 6 is a flow diagram illustrating an example process of handlingrequests for video streaming and downloading, based on estimated datarequirements and data allocation limits, in accordance with certainembodiments of the present disclosure.

FIGS. 7A and 7B are two example user interface displays generated inresponse to video streaming or downloading requests, in accordance withcertain embodiments of the present disclosure.

FIG. 8 is a flow diagram illustrating an example process of managingongoing video streaming on a client device, based on estimated datarequirements and data allocation limits, in accordance with certainembodiments of the present disclosure.

FIG. 9 is a flow diagram illustrating an example process of handlingrequests for video streaming and/or playback on a client device, basedon estimated battery usage data and battery status data, in accordancewith certain embodiments of the present disclosure.

FIGS. 10A and 10B are two example user interface displays generated inresponse to video streaming and/or playback requests, in accordance withcertain embodiments of the present disclosure.

In the appended figures, similar components or features may have thesame reference label. Further, various components of the same type maybe distinguished by following the reference label by a dash and a secondlabel that distinguishes among the similar components. If only the firstreference label is used in the specification, the description isapplicable to any one of the similar components having the same firstreference label irrespective of the second reference label.

DETAILED DESCRIPTION

The subject matter of embodiments of the present invention is describedhere with specificity to meet statutory requirements, but thisdescription is not necessarily intended to limit the scope of theclaims. The claimed subject matter may be embodied in other ways, mayinclude different elements or steps, and may be used in conjunction withother existing or future technologies. This description should not beinterpreted as implying any particular order or arrangement among orbetween various steps or elements except when the order of individualsteps or arrangement of elements is explicitly described.

Various techniques (e.g., methods, systems, computer-readable storagemedia devices coupled to processors and storing computer executableinstructions, etc.) are disclosed for evaluating and managing devicehardware, software, and network resources during streaming and/ordownloading of video resources from remote network locations to clientdevices. As discussed in the examples and embodiments below, such clientdevices may include television equipment such as set-top boxes,receivers, televisions and/or other corresponding electronic displays,computing devices such as desktop, laptop and tablet computers, mobilephones and other handheld electronic devices, and the like.Additionally, the video resources requested and transmission/received inthe examples and embodiments discussed herein may include traditionaltelevision programming, such as linear television programs, as well asother types of audio, video and/or audio/video content, such ason-demand video content, streaming video content and the like deliveredvia any type of content delivery system, such as a cable, satellite,cellular/wireless, Internet/IP and/or any other content deliverytechnology or system currently known or hereafter developed. Featuresdisclosed herein also may be incorporated into the device having theelectronic display, such as a television with an integrated cable,satellite or IPTV receiver.

As discussed below, certain aspects of the disclosure relate toevaluation of the current resources available at a client device, suchas memory, processing capacity, device battery status, networkavailability and/or data quotas, in view of a video resource request.Based on the evaluation of the client device's resources, and anestimation of the effects that video streaming/downloading and playbackmay have on the client device's resources, the client device maycontrol, customize, and/or alter the retrieval or playback of requestedvideo resources.

In accordance with certain embodiments described herein, requests fromclient devices for video resources may be evaluated and controlled basedon data allocation limits associated with the combination of therequesting entity and the communication network over which the requestedvide may be transmitted, as well as the characteristics of the requestedvideo resources. For example, a client device may initially request aparticular video resource from a remote video content library. Inresponse to the request, the characteristics of the particular videoresource may be determined, and an amount of data required totransmit/receive the particular video resource from the remote locationto the client device may be computed. Additionally, a data allocationlimit may be determined based on the combination of the entityassociated with the video request (e.g., a user, a client device, ahousehold network/account, etc.), as well as the communicationnetwork(s) associated with the request. The retrieval and/or playback ofthe requested video resource may be controlled based on the determineddata allocation limit, with respect to the amount of data required toreceive the particular video resource. For example, the retrieval of arequested video may be prevented, allowed, or may cause the presentationof a user notification, based on a comparison of the amount of datarequired to receive the particular video resource to the determined dataallocation limit. In certain embodiments, subsequent comparisons andmodifications may be performed during an ongoing video streaming andplayback process, for example, based on detected changes to the networkover which the video is streaming.

Additional aspects described herein relate to evaluating and controllingrequests from client devices for video resources based on the currenthardware resource status of the client device. For example, a clientdevice may initially request a particular video resource from a remotevideo content library. In response to the request, one or more currentstatus data of the client device may be determined, such as the statusof the device battery, memory, processors, software applications, devicedisplay settings, and/or access networks, etc. Additionally, thecharacteristics of the requested video resource may be determined, andcalculations may be performed regarding how the streaming/downloadingand playing the requested video resource may affect the current statusthe client device resources. By way of example, the client device mayprevent a video from streaming and/or cause the presentation of a usernotification in response to a determination that the client device hasinsufficient battery life to play the entire video. In otherembodiments, certain device settings and/or video streaming behaviorsmay be customized based on the evaluation of the device's battery life.In further examples, the evaluations and estimations performed mayleverage additional data, such as calendar or social media data from theuser, as well as other user data sources, and the video downloading,streaming, and playback processes may be further controlled based onthese additional factors.

With reference now to FIG. 1, a block diagram is shown illustratingvarious components of a content distribution network (CDN) 100, overwhich requests for video resources from client devices may be received,evaluated, and provided in accordance with the techniques disclosedherein. In various embodiments, the content distribution network 100 maycomprise one or several physical components and/or one or severalvirtual components such as, for example, one or several cloud computingcomponents. In some embodiments, the content distribution network 100can comprise a mixture of physical and cloud computing components.

Content distribution network 100 may include one or more contentmanagement servers 102, corresponding to the remote back-end serversthat receive and respond to requests for video resources from clientdevices 106. As discussed below in more detail, content managementservers 102 may be any desired type of server including, for example, arack server, a tower server, a miniature server, a blade server, a minirack server, a mobile server, an ultra-dense server, a super server, orthe like, and may include various hardware components, for example, amotherboard, a processing units, memory systems, hard drives, networkinterfaces, power supplies, etc. Content management server 102 mayinclude one or more server farms, clusters, or any other appropriatearrangement and/or combination or computer servers. Content managementserver 102 may act according to stored instructions located in a memorysubsystem of the server 102, and may run an operating system, includingany commercially available server operating system and/or any otheroperating systems discussed herein.

The content distribution network 100 may include one or more data storeservers 104, such as database servers and file-based storage systems.The database servers 104 can access data (e.g., video resources) thatcan be stored on a variety of hardware components. These hardwarecomponents can include, for example, components forming tier 0 storage,components forming tier 1 storage, components forming tier 2 storage,and/or any other tier of storage. In some embodiments, tier 0 storagerefers to storage that is the fastest tier of storage in the databaseserver 104, and particularly, the tier 0 storage is the fastest storagethat is not RAM or cache memory. In some embodiments, the tier 0 memorycan be embodied in solid state memory such as, for example, asolid-state drive (SSD) and/or flash memory.

In some embodiments, the tier 1 storage refers to storage that is one orseveral higher performing systems in the memory management system, andthat is relatively slower than tier 0 memory, and relatively faster thanother tiers of memory. The tier 1 memory can be one or several harddisks that can be, for example, high-performance hard disks. These harddisks can be one or both of physically or communicatively connected suchas, for example, by one or several fiber channels. In some embodiments,the one or several disks can be arranged into a disk storage system, andspecifically can be arranged into an enterprise class disk storagesystem. The disk storage system can include any desired level ofredundancy to protect data stored therein, and in one embodiment, thedisk storage system can be made with grid architecture that createsparallelism for uniform allocation of system resources and balanced datadistribution. In some embodiments, the tier 2 storage refers to storagethat includes one or several relatively lower performing systems in thememory management system, as compared to the tier 1 and tier 2 storages.Thus, tier 2 memory is relatively slower than tier 1 and tier 0memories. Tier 2 memory can include one or several SATA-drives or one orseveral NL-SATA drives.

In some embodiments, the one or several hardware and/or softwarecomponents of the database server 104 can be arranged into one orseveral storage area networks (SAN), which one or several storage areanetworks can be one or several dedicated networks that provide access todata storage, and particularly that provides access to consolidated,block level data storage. A SAN typically has its own network of storagedevices that are generally not accessible through the local area network(LAN) by other devices. The SAN allows access to these devices in amanner such that these devices appear to be locally attached to the userdevice.

Data stores 104 may comprise stored video resources and other datarelevant to the functions of the content distribution network 100. Insome embodiments, multiple data stores may reside on a single server104, either using the same storage components of server 104 or usingdifferent physical storage components to assure data security andintegrity between data stores. In other embodiments, each data store mayhave a separate dedicated data store server 104.

Content distribution network 100 also may include one or more clientdevices 106, which may request and receive content resources (e.g.,video files and streaming video content) from the back-end contentmanagement servers 102, through one or more communication networks 120.Client devices 106 may request, receive, and display content receivedvia the content distribution network 100, and may support various typesof user interactions with the content. Client devices 106 may includemobile devices such as smartphones, tablet computers, personal digitalassistants, and wearable computing devices. Such mobile devices may runa variety of mobile operating systems, and may be enabled for Internet,e-mail, short message service (SMS), Bluetooth®, mobile radio-frequencyidentification (M-RFID), and/or other communication protocols. Otherclient devices 106 may be general purpose personal computers orspecial-purpose computing devices including, by way of example, personalcomputers, laptop computers, workstation computers, projection devices,and interactive room display systems. Additionally, client devices 106may be any other electronic devices, such as a thin-client computers, anInternet-enabled gaming systems, business or home appliances, and/or apersonal messaging devices, capable of communicating over network(s)120.

In different contexts of content distribution networks 100, clientdevices 106 may correspond to different types of specialized devices,for example, televisions, receivers, and set-top boxes in a televisionor media distribution network, employee devices and presentation devicesin a company network, gaming client devices in a gaming network, studentdevices and teacher devices in an educational network, etc. In someembodiments, client devices 106 may operate in the same physicallocation 107, such as a household 107 of networked client devices, andbusiness office having a number of related client devices, etc. In suchcases, the client devices 106 may contain components that support directcommunications with other nearby devices, such as a wirelesstransceivers and wireless communications interfaces, Ethernet sockets orother Local Area Network (LAN) interfaces, etc. In otherimplementations, the client devices 106 need not be used at the samelocation 107, but may be used in remote geographic locations in whicheach client device 106 may use security features and/or specializedhardware (e.g., hardware-accelerated SSL and HTTPS, WS-Security,firewalls, etc.) to communicate with the content management server 102and/or other remotely located client devices 106, to request and receivevideo content. Additionally, different client devices 106 may beassigned different designated roles, such as video presenter/presenteedevices, teacher/student devices, administrator devices, or the like,and in such cases the different devices may be provided with additionalhardware and/or software components to provide content and support usercapabilities not available to the other devices.

The content distribution network 100 also may include one or more proxyservers 108 and/or firewall devices, which may act as intermediarydevices between the client devices 106 and the back-end of the contentdistribution network 100 (as well as other web servers and remoteservers on the Internet). Proxy servers 108 may provide various featuresfor the client devices 106, such as security, connectivity, contentfiltering, and content caching. Thus, it may be possible to servecertain video requests from client devices 106 by a proxy server 108,rather than requiring content managers 102, data servers 104 and/orcontent servers 112 to handle the video resource request. In some cases,such caching functionality may be entirely transparent to the clientdevice 106, so that video resources that appear to the client device 106to be retrieved from a remote server 102 may actually be received from acloser and more secure proxy server 108 over a faster local network.

As illustrated in FIG. 1, the content management server 102 may be incommunication with one or more additional servers, such as a contentserver 112, a user data server 112, and/or an administrator server 116.Each of these servers may include some or all of the same physical andlogical components as the content management server(s) 102, and in somecases, the hardware and software components of these servers 112-116 maybe incorporated into the content management server(s) 102, rather thanbeing implemented as separate computer servers.

Content server 112 may include hardware and software components togenerate, store, and maintain the content resources for distribution touser devices 106 and other devices in the network 100. For example, incontent distribution networks 100 used for media/entertainment purposes,interactive gaming, and the like, a content server 112 may include mediacontent files such as music, movies, television programming, games, andadvertisements.

User data server 114 may include hardware and software components thatstore and process data for multiple users relating to each user'sactivities and usage of the content distribution network 100. Forexample, the content management server 102 may record and track eachuser's system usage, including their client device 106, location 107,video resources retrieved and played, and interactions with other clientdevices 106. This data may be stored and processed by the user dataserver 114, to support user tracking and analysis features. In thecontext of media distribution and interactive gaming, the user dataserver 114 may store and process resource access data for multiple users(e.g., content titles accessed, access times, data usage amounts,viewing/gaming histories, user devices and device types, etc.). The userdata server 114 may also store user viewing patterns, user feedback,facial expression data, etc., received during video content delivery andplayback.

Administrator server 116 may include hardware and software components toinitiate various administrative functions at the content managementserver 102 and other components within the content distribution network100. For example, the administrator server 116 may monitor device statusand performance for the various servers, data stores, and/or clientdevices 106 in the content distribution network 100. When necessary, theadministrator server 116 may add or remove devices from the network 100,and perform device maintenance such as providing software updates to thedevices in the network 100. Various administrative tools on theadministrator server 116 may allow authorized users to set user accesspermissions to various content resources, monitor video resource usageby users and devices 106, and perform analyses and generate reports onspecific network users and/or devices (e.g., vide resource usagetracking reports, network usage/streaming data, etc.).

The content distribution network 100 may include one or morecommunication networks 120. Although only a single network 120 isidentified in FIG. 1, the content distribution network 100 may includeany number of different communication networks between any of thecomputer servers and devices shown in FIG. 1 and/or other devicesdescribed herein.

Communication networks 120 may enable communication between the variouscomputing devices, servers, and other components of the contentdistribution network 100. As discussed below, various implementations ofcontent distribution networks 100 may employ different types of networks120, for example, computer networks, telecommunications networks,wireless networks, satellite television provider networks, cabletelevision networks, and/or any combination of these and/or othernetworks.

In some embodiments, a content distribution network 100 may include oneor several navigation systems or features including, for example, theGlobal Positioning System (“GPS”), GALILEO, or the like, or locationsystems or features including, for example, one or several transceiversthat can determine the locations of client devices 106 and/or othercomponents of the content distribution network 100 via, for example,triangulation. All of these are depicted as navigation system 122. Insome embodiments, this communication can include the transmission of asignal from the navigation system 122 which signal is received by one orseveral components of the content distribution network 100 and can beused to determine the location of the one or several components of thecontent distribution network 100.

With reference now to FIG. 2, an illustrative distributed computingenvironment 200 is shown including a computer server 202, four clientcomputing devices 206, and other components that may implement certainembodiments and features described herein. In some embodiments, theserver 202 may correspond to the content management server 102 discussedabove in FIG. 1, and the client computing devices 206 may correspond tothe client devices 106. However, the computing environment 200illustrated in FIG. 2 may correspond to any other combination of devicesand servers configured to implement a client-server model or otherdistributed computing architecture.

Client devices 206 may be configured to receive and execute clientapplications over one or more networks 220. Such client applications maybe web browser based applications and/or standalone softwareapplications, such as mobile device applications. Server 202 may becommunicatively coupled with the client devices 206 via one or morecommunication networks 220. Client devices 206 may receive clientapplications from server 202 or from other application providers (e.g.,public or private application stores). Server 202 may be configured torun one or more server software applications or services, for example,web-based or cloud-based services, to support content distribution andinteraction with client devices 206. Users operating client devices 206may in turn utilize one or more client applications (e.g., virtualclient applications) to interact with server 202 to utilize the servicesprovided by these components.

Various different subsystems and/or components 204 may be implemented onserver 202. Users operating the client devices 206 may initiate one ormore client applications to use services provided by these subsystemsand components. The subsystems and components within the server 202 andclient devices 206 may be implemented in hardware, firmware, software,or combinations thereof. Various different system configurations arepossible in different distributed computing systems 200 and contentdistribution networks 100. The embodiment shown in FIG. 2 is thus oneexample of a distributed computing system and is not intended to belimiting.

Although exemplary computing environment 200 is shown with four clientcomputing devices 206, any number of client computing devices may besupported. Other devices, such as specialized sensor devices, etc., mayinteract with client devices 206 and/or server 202.

Referring now to FIG. 3, an embodiment of a satellite televisiondistribution system 100, on which various aspects of the presentdisclosure may be implemented. For example, as discussed above, in someembodiments requests for video downloading and/or video streaming may beinitiated from television client devices and served over a satellitetelevision network. In such embodiments, a satellite televisiondistribution system 300 may include: television service provider system310, satellite transmitter equipment 320, satellites 330, satellite dish340, set-top box 350, and television 360. Alternate embodiments ofsatellite television distribution system 300 may include fewer orgreater numbers of components. While only one satellite dish 340,set-top box 350, and television 360 (collectively referred to as “userequipment”) are illustrated, it should be understood that multiple(e.g., tens, thousands, millions) instances of user equipment mayreceive television signals from satellites 330.

Television service provider system 310 and satellite transmitterequipment 320 may be operated by a television service provider. Atelevision service provider may distribute television channels,on-demand programming, programming information, and/or other services tousers. Television service provider system 310 may receive feeds of oneor more television channels from various sources. Such televisionchannels may include multiple television channels that contain the samecontent (but may be in different formats, such as high-definition andstandard-definition). To distribute such television channels to users,feeds of the television channels may be relayed to user equipment viaone or more satellites via transponder streams. Satellite transmitterequipment 320 may be used to transmit a feed of one or more televisionchannels from television service provider system 310 to one or moresatellites 330. While a single television service provider system 310and satellite transmitter equipment 320 are illustrated as part ofsatellite television distribution system 300, it should be understoodthat multiple instances of transmitter equipment may be used, possiblyscattered geographically to communicate with satellites 330. Suchmultiple instances of satellite transmitting equipment may communicatewith the same or with different satellites. Different televisionchannels may be transmitted to satellites 330 from different instancesof transmitting equipment. For instance, a different satellite dish oftransmitting equipment 320 may be used for communication with satellitesin different orbital slots.

Satellites 330 may be configured to receive signals, such as streams oftelevision channels, from one or more satellite uplinks such assatellite transmitter equipment 320. Satellites 330 may relay receivedsignals from satellite transmitter equipment 320 (and/or other satellitetransmitter equipment) to multiple instances of user equipment viatransponder streams. Different frequencies may be used for uplinksignals 370 from transponder stream 380. Satellites 330 may be ingeosynchronous orbit. Each satellite 330 may be in a different orbitalslot, such that the signal path between each satellite, uplink stations,and user equipment vary. Multiple satellites 330 may be used to relaytelevision channels from television service provider system 310 tosatellite dish 340. Different television channels may be carried usingdifferent satellites. Different television channels may also be carriedusing different transponders of the same satellite; thus, suchtelevision channels may be transmitted at different frequencies and/ordifferent frequency ranges. As an example, a first and second televisionchannel may be carried on a first transponder of satellite 330-1. Athird, fourth, and fifth television channel may be carried using adifferent satellite or a different transponder of the same satelliterelaying the transponder stream at a different frequency. A transponderstream transmitted by a particular transponder of a particular satellitemay include a finite number of television channels, such as seven.Accordingly, if many television channels are to be made available forviewing and recording, multiple transponder streams may be necessary totransmit all of the television channels to the instances of userequipment.

Satellite dish 340 may be a piece of user equipment that is used toreceive transponder streams from one or more satellites, such assatellites 330. Satellite dish 340 may be provided to a user for use ona subscription basis to receive television channels provided by thetelevision service provider system 310, satellite uplink 320, and/orsatellites 330. Satellite dish 340 may be configured to receivetransponder streams from multiple satellites and/or multipletransponders of the same satellite. Satellite dish 340 may be configuredto receive television channels via transponder streams on multiplefrequencies. Based on the characteristics of set-top box (STB) 350and/or satellite dish 340, it may only be possible to capturetransponder streams from a limited number of transponders concurrently.For example, a tuner of STB 350 may only be able to tune to a singletransponder stream from a transponder of a single satellite at a time.

In communication with satellite dish 340, may be one or more sets ofreceiving equipment. Receiving equipment may be configured to decodesignals received from satellites 330 via satellite dish 340 for displayon a display device, such as television 360. Receiving equipment may beincorporated as part of a television or may be part of a separatedevice, commonly referred to as a set-top box (STB). Receiving equipmentmay include a satellite tuner configured to receive television channelsvia a satellite. In FIG. 3, receiving equipment is present in the formof set-top box 350. As such, set-top box 350 may decode signals receivedvia satellite dish 340 and provide an output to television 360. FIG. 4provides additional detail of receiving equipment.

Television 360 may be used to present video and/or audio decoded byset-top box 350. Set-top box 350 may also output a display of one ormore interfaces to television 360, such as an electronic programmingguide (EPG). In some embodiments, a display device other than atelevision may be used.

Uplink signal 370-1 represents a signal between satellite uplink 320 andsatellite 330-1. Uplink signal 370-2 represents a signal betweensatellite uplink 320 and satellite 330-2. Each of uplink signals 370 maycontain streams of one or more different television channels. Forexample, uplink signal 370-1 may contain a certain group of televisionchannels, while uplink signal 370-2 contains a different grouping oftelevision channels. Each of these television channels may be scrambledsuch that unauthorized persons are prevented from accessing thetelevision channels.

Transponder stream 380-1 represents a signal path between satellite330-1 and satellite dish 340. Transponder stream 380-2 represents asignal path between satellite 330-2 and satellite dish 340. Each oftransponder streams 380 may contain one or more different televisionchannels in the form of transponder streams, which may be at leastpartially scrambled. For example, transponder stream 380-1 may include afirst transponder stream containing a first group of televisionchannels, while transponder stream 380-2 may include a secondtransponder stream containing a different group of television channels.A satellite may transmit multiple transponder streams to user equipment.For example, a typical satellite may relay 32 transponder streams viacorresponding transponders to user equipment. For clarity, it should benoted that satellites carry many transponders, and transponders maycarry a single multiplexed transport stream containing many PIDs. Aservice consists of one or more PIDs for audio, video, and data on thatmultiplexed transport stream.

FIG. 3 illustrates transponder stream 380-1 and transponder stream 380-2being received by satellite dish 340. For a first group of televisionchannels, satellite dish 340 may receive a transponder stream oftransponder stream 380-1; for a second group of channels, a transponderstream of transponder stream 380-2 may be received. STB 350 may decodethe received transponder stream. As such, depending on which televisionchannel(s) are desired, a transponder stream from a different satellite(or a different transponder of the same satellite) may be accessed anddecoded by STB 350. Further, while two satellites are present insatellite television distribution system 300, in other embodimentsgreater or fewer numbers of satellites may be present for receiving andtransmitting transponder streams to user equipment.

Network 390 may serve as a secondary communication channel betweentelevision service provider system 310 and set-top box 350. Via such asecondary communication channel, bidirectional exchange of data mayoccur. As such, data may be transmitted to television service providersystem 310 via network 390. Data may also be transmitted from televisionservice provider system 310 to STB 350 via network 390. Network 390 maybe the Internet. While audio and video services may be provided to STB350 via satellites 330, feedback from STB 350 to television serviceprovider system 310 may be transmitted via network 390. In someembodiments, STB 350 may be communicatively coupled via the network 390with one or more third party data sources 342. The one or more thirdparty data sources 342 may provide third party reference data, whichwill be discussed further herein.

FIG. 3 illustrates an example of a satellite-based television channeldistribution system. It should be understood that at least some of theaspects of such a system may be similar to a cable televisiondistribution system. For example, in a cable television system, ratherthan using satellite transponders, multiple RF channels on a cable maybe used to transmit streams of television channels. As such, aspectsdetailed herein may be applicable to cable television distributionsystems.

Referring now to FIG. 4, a block diagram is shown illustrating anembodiment of a set-top box 400. STB 400 may be set-top box 150 of FIG.1, or may be incorporated as part of a television, such as television160 of FIG. 1. STB 400 may include: processors 410, tuners 415, networkinterfaces 420, non-transitory computer-readable storage medium 425,electronic programming guide (EPG) 430, television interface 435,networking information table (NIT) 440, digital video recorder (DVR)445, user interface 450, demultiplexer 455, smart card 460, and/ordescrambling engine 465. In other embodiments of STB 400, smaller orgreater numbers of components may be present. Various embodiments of STB400 may include any suitable number of tuners 415 and attendantcomponents, such as decoders 433, to facilitate various featuresdisclosed herein. For example, various embodiments may include up toeight or more—any suitable number—of tuners 415 to facilitateembodiments of the present disclosure. It should be understood that thevarious components of STB 400 may be implemented using hardware,firmware, software, and/or some combination thereof. For example, EPG430 may include software instructions to be executed by processors 410.

Processors 410 may include one or more general-purpose processorsconfigured to perform processes such as commanding a tuner, demodulator,demultiplexer, descrambling engine, and audio video decoders to tune toa particular channel, displaying the EPG, and/or receiving andprocessing input from a user. Processors 410 may include one or morespecial purpose processors. For example, processors 410 may include oneor more processors dedicated to decoding video signals from a particularformat, such as MPEG, for output and display on a television and forperforming decryption. It should be understood that the functionsperformed by various modules of FIG. 4 may be performed using one ormore processors. As such, for example, functions of descrambling engine465 may be performed by processor 410 in some embodiments. In someembodiments, functions performed by various modules such as descramblingengine 465 may be performed using one or more dedicated processors.

Tuners 415 may include one or more tuners used to facilitate tuning totelevision channels, such as television channels transmitted viasatellite or cable. Each tuner contained in tuners 415 may be capable ofreceiving and processing one or more streams of data from a satellitetransponder (or a cable RF channel) at a given time. As such, a singletuner may tune to one transponder (or cable RF channel). If tuners 415include multiple tuners, one tuner may be used to tune to a televisionchannel on a first transponder for display using a television, while oneor more tuners of the set-top box may be identified that are idle. Forexample, if the set-top box has four tuners, the three tuners not beingused to tune to the first television channel may be idle. An idle tunermay be defined as a tuner that is not being used to receive atransponder stream for presentation of a television channel via apresentation device or for recording of a television channel. An idletuner may be used to tune to a television channel on a secondtransponder for recording and viewing at some other time. If multipletelevision channels transmitted on the same transponder stream aredesired, a single tuner of tuners 415 may be used to receive the signalcontaining the multiple television channels for presentation and/orrecording in some embodiments. Additionally or alternatively, theavailability of audio/video decoding resources may be determined. Forexample, the number of audio/video decoder submodules 433 that are idlemay be determined. An audio/video decoder submodule may be defined asidle when the audio/video decoder submodule is not being used to decodevideo and/or audio received from a DVR or descrambling engine.

Network interface(s) 420 may be used to communicate via an alternatecommunication channel with a television service provider. For example,the primary communication channel may be via satellite (which may beunidirectional to the STB) and the alternate communication channel(which may be bidirectional) may be via a network, such as the Internet.Network interface(s) 420 may include a modem interface, as a STB mayinclude a modem in some embodiments, as well other interfaces describedherein. Referring back to FIG. 1, STB 150 may be able to communicatewith television service provider system 110 via a network, such as theInternet. This communication may be bidirectional: data may betransmitted from STB 150 to television service provider system 110 andfrom television service provider system 110 to STB 150. Referring backto FIG. 4, network interface 420 may be configured to communicate viaone or more networks, such as the Internet, to communicate withtelevision service provider system 110 of FIG. 1 and other informationsources. Information may be transmitted and/or received via networkinterface(s) 420.

Storage medium 425 may represent a non-transitory computer readablestorage medium. Storage medium 425 may include memory and/or a harddrive. Storage medium 425 may be used to store information received fromone or more satellites and/or information received via network interface420. Storage medium 425 may store information related to EPG 430, NIT440, and/or DVR 445. DVR 445 may include software instructions, storedon the storage medium 425, to be executed by the processor(s) in orderto provide DVR functions. Additionally, recorded television programs maybe stored using storage medium 425.

EPG 430 may include software instructions to be executed by theprocessor(s) in order to provide EPG functions and rendering of data.EPG 430 may store information related to television channels and thetiming of programs appearing on such television channels. In someembodiments, EPG 430, including software instructions and EPG data, maybe stored using non-transitory storage medium 425, which may be a harddrive. EPG 430 may be used to inform users of what television channelsor programs are popular and/or provide recommendations to the user. EPG430 may provide the user with a visual interface displayed by atelevision that allows a user to browse and select television channelsand/or television programs for viewing and/or recording via DVR 445.Information used to populate EPG 430 may be received via networkinterface 420 and/or via satellites, such as satellites 130 of FIG. 1via tuners 415. For instance, updates to EPG 430 may be receivedperiodically via satellite. EPG 430 may serve as an interface for a userto control DVR 445 to enable viewing and/or recording of multipletelevision channels simultaneously.

One or more audio/video decoders 433 may serve to convert encoded videoand audio into a format suitable for output to a display device. Forinstance, audio/video decoder 433 may receive MPEG video and audio fromstorage medium 425 or descrambling engine 465 to be output to atelevision. Audio/video decoder 433 may convert the MPEG video and audiointo a format appropriate to be displayed by a television or other formof display device and audio into a format appropriate to be output fromspeakers, respectively. The number of audio/video decoders 433 may ormay not correspond to the number of tuners 415 in certain embodiments.

Television interface 435 may serve to output a signal to a television(or another form of display device) in a proper format for display ofvideo and playback of audio. As such, television interface 435 mayoutput one or more television channels, stored television programmingfrom storage medium 425 (e.g., DVR 445 and/or information from EPG 430)to a television for presentation.

The network information table (NIT) 440 may store information used byset-top box 400 to access various television channels. NIT 440 may bestored using storage medium 425. Information used to populate NIT 440may be received via satellite (or cable) through tuners 415 and/or maybe received via network interface 420 from the television serviceprovider. As such, information present in NIT 440 may be periodicallyupdated. NIT 440 may be locally-stored by STB 400 using storage medium425. Information that may be present in NIT 440 may include: televisionchannel numbers, a satellite identifier, a frequency identifier, atransponder identifier, an ECM PID, one or more audio PIDs, and a videoPID. (A second audio PID of a channel may correspond to a second audioprogram (SAP), such as in another language.) In some embodiments, NIT440 may be divided into additional tables. For example, rather than thespecific audio PIDs and video PIDs being present in NIT 440, a channelidentifier may be present within NIT 440 which may be used to lookup theaudio PIDs and video PIDs in another table.

Table 1 provides a simplified example of NIT 440 for several televisionchannels. It should be understood that in other embodiments, many moretelevision channels may be represented in NIT 440. NIT 440 isperiodically updated by a television service provider. As such,television channels may be reassigned to different satellites and/ortransponders, and STB 400 may be able to handle this reassignment aslong as NIT 440 is updated.

TABLE 1 Channel Satellite Transponder ECM PID Audio PIDs Video PID 4 1 227 1001 1011 5 2 11 29 1002 1012 7 2 3 31 1003 1013 13 2 4 33 1003, 10041013

It should be understood that the values provided in Table 1 are forexample purposes only. Actual values, including how satellites andtransponders are identified, may vary. Additional information may alsobe stored in NIT 440. Video and/or audio for different televisionchannels on different transponders may have the same PIDs. Suchtelevision channels may be differentiated based on which satelliteand/or transponder to which a tuner is tuned.

Digital Video Recorder (DVR) 445 may include software instructionsand/or data stored on storage medium 425. DVR 445 permit a televisionchannel to be recorded for a period of time. DVR 445 may store timersthat are used by processors 410 to determine when a television channelshould be tuned to and recorded to DVR 445 of storage medium 425. Insome embodiments, a limited amount of storage medium 425 may be devotedto DVR 445. Timers may be set by the television service provider and/orone or more users of the STB. DVR 445 may be configured by a user torecord particular television programs. Whether a user directly tunes toa television channel or DVR 445 tunes to a first television channel, NIT440 may be used to determine the satellite, transponder, ECM PID (packetidentifier), audio PID, and video PID.

User interface 450 may include a remote control (physically separatefrom STB 400) and/or one or more buttons on STB 400 that allows a userto interact with STB 400. User interface 450 may be used to select atelevision channel for viewing, view EPG 430, and/or program DVR 445.

Referring back to tuners 415, television channels received via satellite(or cable) may contain at least some scrambled data. Packets of audioand video may be scrambled to prevent unauthorized users (e.g.,nonsubscribers) from receiving television programming without paying thetelevision service provider. When a tuner of tuners 415 is receivingdata from a particular transponder of a satellite, the transponderstream may be a series of data packets corresponding to multipletelevision channels. Each data packet may contain a packet identifier(PID), which in combination with NIT 440, can be determined to beassociated with particular television channel. Particular data packets,referred to as entitlement control messages (ECMs), may be periodicallytransmitted. ECMs may be encrypted; STB 400 may use smart card 460 todecrypt ECMs. Decryption of an ECM may only be possible if the user hasauthorization to access the particular television channel associatedwith the ECM. When an ECM is received by demultiplexer 455 and the ECMis determined to correspond to a television channel being stored and/ordisplayed, the ECM may be provided to smart card 460 for decryption.

When smart card 460 receives an encrypted ECM from demultiplexer 455,smart card 460 may decrypt the ECM to obtain some number of controlwords. In some embodiments, from each ECM received by smart card 460,two control words are obtained. In some embodiments, when smart card 460receives an ECM, it compares the ECM to the previously received ECM. Ifthe two ECMs match, the second ECM is not decrypted because the samecontrol words would be obtained. In other embodiments, each ECM receivedby smart card 460 is decrypted; however, if a second ECM matches a firstECM, the outputted control words will match; thus, effectively, thesecond ECM does not affect the control words output by smart card 460.

When an ECM is received by smart card 460, it may take a period of timefor the ECM to be decrypted to obtain the control words. As such, aperiod of time, such as 2 seconds, may elapse before the control wordsindicated by the ECM can be obtained. Smart card 460 may be permanentlypart of STB 400 or maybe configured to be inserted and removed from STB400.

Demultiplexer 455 may be configured to filter data packets based onPIDs. For example, if a transponder data stream includes multipletelevision channels, data packets corresponding to a television channelthat is not desired to be stored or displayed by the user, may beignored by demultiplexer 455. As such, only data packets correspondingto the one or more television channels desired to be stored and/ordisplayed may be passed to either descrambling engine 465 or smart card460; other data packets may be ignored. For each channel, a stream ofvideo packets, a stream of audio packets and/or a stream of ECM packetsmay be present, each stream identified by a PD. In some embodiments, acommon ECM stream may be used for multiple television channels.Additional data packets corresponding to other information, such asupdates to NIT 440, may be appropriately routed by demultiplexer 455. Itshould be understood that, in some embodiments, all peripherals maycommunicate with main memory (RAM)/DRAM when communicating with othercomponents.

Descrambling engine 465 may use the control words output by smart card460 in order to descramble video and/or audio corresponding totelevision channels for storage and/or presentation. Video and/or audiodata contained in the transponder data stream received by tuners 415 maybe scrambled. The video and/or audio may be descrambled by descramblingengine 465 using a particular control word. Which control word output bysmart card 460 to be used for successful descrambling may be indicatedby a scramble control identifier present within the data packetcontaining the scrambled video or audio. Descrambled video and/or audiomay be output by descrambling engine 465 to storage medium 425 forstorage (via DVR 445) and/or to audio/video decoder 433 for output to atelevision or other presentation equipment via television interface 435or both.

For simplicity, STB 400 of FIG. 4 has been reduced to a block diagram,commonly known parts, such as a power supply, have been omitted.Further, some routing between the various modules of STB 400 has beenillustrated. Such illustrations are for exemplary purposes only. Twomodules not being directly or indirectly connected does not indicate themodules cannot communicate. Rather, connections between modules of theSTB 400 are intended only to indicate possible common data routing. Itshould be understood that the modules of STB 400 may be combined into asmaller number of modules or divided into a greater number of modules.Further, the components of STB 400 may be part of another device, suchas built into a television. Also, while STB 400 may be used to receive,store, and present television channels received via a satellite, itshould be understood that similar components may be used to receive,store, and present television channels via a cable network.

Referring now to FIG. 5, an example is shown of a computing system 500on which various aspects of the disclosure may be implemented. Thecomputing system 500 may correspond to one or more of client devices106, 206, 350, and/or 360 which may request, retrieve, and play videoresources from remote servers over one or more communication networks.In some embodiments, a client device 500 may be a mobile device 106 suchas smartphone, tablet computer, personal digital assistant, and/or awearable computing device. In other embodiments, client device 500 maybe other computing devices such as desktop computers, laptop computers,tablet computers, and/or other electronic devices. In still otherexamples, client devices 500 may correspond to television equipment suchas set-top boxes 350, televisions 360 and/or other electronic displays.

According to one or more aspects, a computer system 500 as illustratedin FIG. 5 may be incorporated as part of a computing device, which mayimplement, perform, and/or execute any and/or all of the features,methods, and/or method steps described herein. For example, computersystem 500 may represent some of the components of a mobile device. Themobile device can be connected to a wireless interface and/or a networkinterface. Examples of mobile devices include but are not limited tovideo game consoles, tablets, smart phones, and human-wearable orhuman-embedded or electronic devices. In some embodiments, the computingsystem 500 may be configured to implement the features and functionalityof client devices 106, 206, and/or 350/360 described above. FIG. 5provides a schematic illustration of one embodiment of a computer system500 that may perform the methods provided by various other embodiments,as described herein, and/or can function as the back-end computerserver, a remote data store server, a set-top box, and/or other computersystem. FIG. 5 is meant only to provide a generalized illustration ofvarious components, any and/or all of which may be utilized asappropriate. FIG. 5, therefore, broadly illustrates how individualsystem elements may be implemented in a relatively separated orrelatively more integrated manner.

The computer system 500 is shown comprising hardware elements that canbe electrically coupled via a bus 505 (or may otherwise be incommunication, as appropriate). In one embodiment, the bus 505 can beused for the processor 510 to communicate between cores and/or with thememory 535. The hardware elements may include one or more processors510, including without limitation one or more general-purpose processorsand/or one or more special-purpose processors (such as digital signalprocessing chips, graphics acceleration processors, and/or the like);one or more input devices 515, and one or more output devices 520.

The computer system 500 may further include (and/or be in communicationwith) one or more non-transitory storage devices 525, which cancomprise, without limitation, local and/or network accessible storage,and/or can include, without limitation, memory devices, a disk drive, adrive array, an optical storage device, a solid-state storage devicesuch as a random access memory (“RAM”) and/or a read-only memory(“ROM”), which can be programmable, flash-updateable and/or the like.Such storage devices may be configured to implement any appropriate datastorage, including without limitation, various file systems, databasestructures, and/or the like.

The computer system 500 might also include a communications subsystem530, which can include without limitation a modem, a network card(wireless or wired), an infrared communication device, a wirelesscommunication device and/or chipset (such as a Bluetooth® device, an802.11 device, a WiFi device, a WiMax device, cellular communicationfacilities, etc.), and/or the like. According to one embodiment of thepresent invention, a receiver and GNSS receiver may be examples of acommunication subsystem 530. The communications subsystem 530 may permitdata to be exchanged with one or more communication networks (such asthe networks described herein), other computer systems, and/or any otherdevices described herein. In many embodiments, the computer system 500may further comprise a non-transitory working memory 535, which caninclude a RAM or ROM device, as described above.

When computing system 500 corresponds to a mobile client device, thecommunications subsystem 530 may be linked to an antenna subsystem 550which may comprise a single antenna, multiple antennas or an antennaarray. Antenna subsystem may be used to communicate wirelessly—e.g.according to signaling for GSM, WCDMA, LTE, CDMA2000 and/or WiFi IEEE802.11—by entities such as client devices 106 or 206, back-end servers102 and/or terrestrial wireless transceiver 200. Such wirelesscommunication may enable reception of obfuscated locations and otherinformation by a preferred mobile device 116. According to someembodiments, communication subsystem 930 and antenna subsystem 950 canbe used as a transceiver 555 to communicate wirelessly (e.g.,receive/transmit data).

In some embodiments, the power source 560 of the computer system 500 maybe a battery (e.g., for mobile client devices 106 or 206). Additionallyor alternatively, the power source 560 may AC power (e.g., 420V, 240V,and/or 250V) and/or DC power (e.g., power from a USB cable and/or abattery or batteries), depending on the type and characteristics of theclient computer system 500. In some embodiments, power source 516 is abattery that can be recharged wirelessly, for example when the batteryis within range or a wireless recharging component. In some embodiments,a battery compartment associated with the battery 560 may holds one ormore batteries as a power source for the client device 500 (e.g., AAA,AA, C, D, button cell, lithium, etc.). In some embodiments, the device500 may further comprise one or more solar panels to completely orpartially power the device 500.

The computer system 500 also may comprise software elements, shown asbeing currently located within the working memory 535, including anoperating system 540, device drivers, executable libraries, and/or othercode, such as one or more application programs 545, which may comprisecomputer programs provided by various embodiments, and/or may bedesigned to implement methods, and/or configure systems, provided byother embodiments, as described herein. Merely by way of example, one ormore procedures described with respect to the method(s) discussed inrelation to the following process flow diagrams might be implemented ascode and/or instructions executable by a computer (and/or a processorwithin a computer); in an aspect, then, such code and/or instructionscan be used to configure and/or adapt a general purpose computer (orother device) to perform one or more operations in accordance with thedescribed methods.

A set of these instructions and/or code might be stored on acomputer-readable storage medium, such as the storage device(s) 525described above. In some cases, the storage medium might be incorporatedwithin a computer system, such as computer system 500. In otherembodiments, the storage medium might be separate from a computer system(e.g., a removable medium, such as a compact disc), and/or provided inan installation package, such that the storage medium can be used toprogram, configure and/or adapt a general purpose computer with theinstructions/code stored thereon. These instructions might take the formof executable code, which is executable by the computer system 500and/or might take the form of source and/or installable code, which,upon compilation and/or installation on the computer system 500 (e.g.,using any of a variety of generally available compilers, installationprograms, compression/decompression utilities, etc.) then takes the formof executable code.

Substantial variations may be made in accordance with specificrequirements. For example, customized hardware might also be used,and/or particular elements might be implemented in hardware, software(including portable software, such as applets, etc.), or both. Further,connection to other computing devices such as network input/outputdevices may be employed.

Some embodiments may employ a computer system (such as the computersystem 500) to perform methods in accordance with the disclosure. Forexample, some or all of the procedures of the described methods may beperformed by the computer system 500 in response to processor 510executing one or more sequences of one or more instructions (which mightbe incorporated into the operating system 540 and/or other code, such asan application program 545) contained in the working memory 535. Suchinstructions may be read into the working memory 535 from anothercomputer-readable medium, such as one or more of the storage device(s)525. Merely by way of example, execution of the sequences ofinstructions contained in the working memory 535 might cause theprocessor(s) 510 to perform one or more procedures of the methodsdescribed herein, for example one or more of the elements of the methoddescribed with respect to the process flow diagrams below.

As noted above, computer system 500 may correspond to a client devices500 configured to request, receive, and playback video resources. Suchclient devices may include laptop computers, smartphones, tabletcomputers, and other various types of mobile devices, each of which mayinclude some or all of the hardware, software, and networking componentsdiscussed above. Specifically, a mobile device 500 may be any computingdevice with sufficient memory for storing one or more content resources,and sufficient processing and I/O subcomponents for requesting andexecuting video resources. As discussed above, such video resources mayinclude television programming, music, movies, educational videomaterials and/or gaming content. Accordingly, mobile devices 500 mayinclude the necessary hardware and software components to establish thenetwork interfaces, security and authentication capabilities, andcontent caching capabilities to receive the content, store the content,and execute the content to provide to users in real-time or at latertime. Moreover, in certain embodiments, a single mobile device 500 mayhave different context data (e.g., location data, network connectivitystatus data, movement and noise data, etc.) during different contentresource execution sessions. Laptop computers, tablet computers, smartphones, smart watches, wearable computing devices, and vehicle-basedcomputing systems are all examples of mobile devices 500 that may changelocations and network connectivity status, may detect movement and noisedata, and may have other changing context data during a single contentresource execution session or between multiple different executionsessions.

For mobile client devices 500, the input subsystems 515 and outputsubsystems 520 may include the I/O hardware and software components tosupport a specific set of output capabilities (e.g., LCD display screencharacteristics, screen size, color display, video driver, speakers,audio driver, graphics processor and drivers, etc.), and a specific setof input capabilities (e.g., keyboard, mouse, touchscreen, voicecontrol, cameras, facial recognition, gesture recognition, etc.). Outputdevices 520 may include one or more display subsystems, indicatorlights, or non-visual displays such as audio output devices, etc.Display subsystems may include, for example, cathode ray tube (CRT)displays, flat-panel devices, such as those using a liquid crystaldisplay (LCD) or plasma display, light-emitting diode (LED) displays,projection devices, touch screens, and the like. In general, use of theterm “output device” is intended to include all possible types ofdevices and mechanisms for outputting information from computer system500 to a user or other computer. For example, output devices 520 mayinclude, without limitation, a variety of display devices that visuallyconvey text, graphics and audio/video information such as monitors,printers, speakers, headphones, automotive navigation systems, plotters,voice output devices, and modems.

It should be understood that different mobile devices 500 may supportdifferent input and output capabilities within their I/O subsystems515-520, and thus different types of content resources may be compatibleor incompatible with certain mobile devices 500. For example, certaincontent resources may require specific types of processors, graphicscomponents, and network components in order to be optimally executed ona mobile device 500. Additionally or alternatively, various contentresources may require specific output capabilities (e.g., LCD displayscreens, minimum screen sizes, color displays, video, audio, graphics,etc.) and/or specific input capabilities (e.g., keyboard, mouse,touchscreen, voice control, gesture recognition, etc.) in order to beoptimally executed on a mobile device 500. In some embodiments, usersmay establish user-specific preferences for executing specific types ofcontent resources on specific types of user devices.

Additionally, the input devices/systems 515 of mobile client devices 500may include one or more device sensors 516 configured to detect contextdata associated with specific video retrieval requests andplayback/execution sessions. Context data may include any datadescribing the current (and/or previous) state of the mobile device 500,the physical environment of the mobile device 500, and/or the user ofthe mobile device 500, at the time of a request for a video resource.For example, such context data may include the location of the mobiledevice 500 and any detected movement of the mobile device 500 during avideo resource request, including speed and overall distance traveled,as well jiggling and vibrating movements indicative of walking, jogging,running, or traveling in cars, busses, or trains, etc. Accordingly,sensors 516 may include accelerometers, speedometers, compasses,gyroscopes, and/or digital positioning systems such as Global PositionSatellite (GPS) receivers 570, in order to detect the position andmovement of the device 500 during an video streaming session. Additionalcontext data may include the orientation of the mobile device 500,ambient light, noise and/or visual background data detected by thedevice 500, and temperature and lighting data within the physicalenvironment of the mobile device 500 during a video streaming session.Thus, sensors 516 also may include thermometers, barometers, lightsensors, cameras, microphones, heat sensors, motion sensors, and thelike, in order to detect background noises such as traffic, music,conversations, and other potential distractions (e.g., other peoplenearby, animals, etc.), as well as lighting and temperature factors thatmay affect performance during an execution session.

Referring now to FIG. 6, a flow diagram is shown illustrating an exampleprocess of handling requests at client devices for video streaming anddownloading, based on estimated data requirements and data allocationlimits. In some embodiments, the steps 601-607 in this example may beperformed by a client computing device 500, in response to a requestinitiated by a user of the client device to retrieve one or more videoresources from a remote location.

In step 601, a request is initiated at a client device 500 to retrieve avideo resource from a remote storage location. In some examples, therequest in step 601 may correspond to video streaming request, that is,a request to initiate the retrieval and streaming of the video forimmediate real-time playback on the client device 500. In otherexamples, the request might correspond to a request to download andstore the video resource on the client device 500 for subsequentplayback at a later time. As discussed above, the techniques andconcepts illustrated herein may apply to many different types of videoresources, different client devices, different back-end servers, whichmay be retrieved over different intermediary computer networks. Forexample, in some embodiments, the request in step 601 may be initiatedby a user action, such as the selection of a video via a mediadistribution application or online streaming service, the selection of amovie via an video-on-demand (VOD) service of a satellite or cableprovider, or in response to a user selecting a video link via a webbrowser (or activating an embedded video on a web page) at a socialmedia website, video sharing website, etc. In other cases, the requestin step 601 may be initiated may an automated process at the clientdevice 500.

In some cases, the client device 500 at which the request is initiatedin step 601 may be mobile device (e.g., 106 or 206), such as a smartphone, tablet or laptop computer, portable gaming system, or ahuman-wearable or human-embedded or electronic device. Alternatively oradditionally, the requested in step 601 may be initiate via a personalcomputing device 206 (e.g., home or work desktop device), or atelevision 360 via a set-top box 350 or other television receiverdevice. Similarly, the remote location from which the video resource isrequested may correspond to a web server or other back-end computerserver (e.g., content management server 102), or alternatively maycorrespond to a television service provider of a satellite network(e.g., system 310) or a cable television network.

The communication network(s) over which the video resource may beretrieved, based on the request in step 601, may include the Internet,local area networks (LANs), other wide area networks (WANs), corporatenetworks, and various other IP networks, as well as satellite networks(e.g., 370-380), cable television networks, and/or cellular/mobilenetworks. This particular network (or combination of networks) overwhich a video resource may be retrieved may depend on the particulardevice used, the current location and network connectivity status of thedevice, and/or type video resource request. VOD requests from set-topboxes 350 may generally be requested and retrieved over thecorresponding television service provider network (e.g., 370-380), whileweb-based videos may be requested and retrieved over IP-networks (e.g.,120). In some cases, video resources to be transmitted to a clientdevice 106 from a remote server 120 may need to traverse multiplenetworks, such as a first satellite, cable, or IP network, followed by asecond local network (e.g., a wireless LAN, corporate network, etc.).Further, in some embodiments, multiple different options may existingfor network paths, such as when a mobile device 106 may retrieve thesame video resource from the same back-end server or service, via acellular network or a WiFi network. In these various examples, for thepurposes of estimating the amount of data required to transmit the videoto the client device (step 602) and determining data allocation limits(steps 603), the client device 500 may take into account all networksand/or all combinations of networks over which the video resource maypotentially be transmitted.

In step 602, the client device 500 may determine one or more estimatesof the amount of data required to be transmitted over the network (orover multiple networks) in order to retrieve the requested videoresource. In some examples, when requesting a multimedia video file forretrieval from a remote server, the client device 500 may request thesize of the video file from the remote server (and/or a related videoservice or application). In other examples, when requesting that a videobe streamed from a remote source (e.g., via a streaming service or videosharing website), the total transmission size required for the streamingmay be generally based on the length of the video, and on the videoquality of the video segments transmitted during the streaming process(e.g., measured by bit rate). Accordingly, in some embodiments, thedetermination in step 602 may be performed based on the videocharacteristics (e.g., file size, or video length and streamingbit-rate).

However, in certain implementations of video distribution systems (e.g.,100, 300), the overall amount of data that will be transmitted inproviding the video to the client device 500 may be based on additionalcharacteristics of the client device 500, the front-end application, thecommunication networks and/or protocols to be used to retrieve thevideo. For instance, the particular network transmission protocols used,including the techniques for chunking and encapsulating the data blocks,may affect the overall transmission size. Additional security layerswithin the network protocols, as well as scrambling and/or encryption,also may increase the total payload size and thus increase the overallamount of data transmission required to stream or the download the videoresource to the client device 500. Some of these additionalcharacteristics may be determined from the client device 500 (e.g.,based on the front-end application/service used to request the video),or by requesting/requiring certain transmission characteristics from theremote server 120, while other additional characteristics might bedetermined by interacting with the communication networks, for example,to determine the overhead of the network protocols, the securityfeatures, types of encryption, and the like, which may affect theoverall network transmission overhead. In some embodiments, if theclient device 500 determines in step 602 that some or all of therequested video is cached locally at the client device 500, in anotherlocal client device (e.g., 106) at the same location (e.g., 107), or inan accessible proxy server 108 or the like, then the client device 500may determine that the cache portions of the video resource may beretrieved readily from the cache without requiring transmission of thevideo data from the remote storage location over the network.

In step 603, the client device 500 (e.g., 106, 206, 350, etc.) maydetermine one or more data allocation limits associated with one or moreentities requesting the video resource, and with one or more networksover which the requested video may be streamed/transmitted. Dataallocation limits, which also may be referred herein to as data quotas,may represent limits on the amount of data that can be requested andreceived over a particular communication network, over a particularlength of time. For example, user network accounts may have monthly dataquotas applicable to video data and/or all other data types. If theamount of data streamed or downloaded over the network during the monthtime period exceeds the user's monthly quota, then the user may becharged an excess data penalty, and/or the network provider may restrictor block the user's access to the network after the user's quota hasbeen reached.

The data allocation limits/quotas determined in step 603 may be specificto a particular entity associated with the video resource request. Theentity to which the quota applies may be, for example, the individualuser that initiated the video request, or the particular client device500 from which the request was initiated. For instance, a first user mayhave a first data quota on a communication network, while a second usermay have second data quota on the same network (even when the seconduser is using the same client device 500, same household or account,same local network, etc.). In other cases, a particular client device500 (e.g., a particular mobile phone, tablet, set-top box, etc.) mayhave a first network data quota, while a second client device 500 has aseparate network data quota, even though both devices may be operated bythe same user, within the same household or location 107, over the sameWiFi or LAN, etc. In other cases, different quotas may be applied to anypredetermined group of users and/or client devices. In still otherexamples, a quota for network data usage may be associated with aparticular location 107 (e.g., a household, office, LAN, etc.), so thatthe quota applies to all data retrieved over the network at thatlocation 107, regardless of the particular client device or userrequesting the data. In other examples, a network data quota may beassociated with a particular account and/or login credentials, so thatthe quota applies to data retrieved following an authorized accountlogin, regardless of the client device 106, the particular user, or thelocation 107 from which the data was received over the network. In someembodiments, quotas for network data usage may potentially be definedfor any possible combination of users, client devices, locations, and/oraccounts/credentials.

Additionally, the data quotas discussed above may be established for anythese entities (or any combination of entities), by any of the variouscommunication networks discussed herein. For instance, a satellitetelevision network 370 may establish data quotas for particularentities, while a cable television network, an IP network provider(e.g., Internet provider), and cellular network provider may establishits own separate data quotas for the same entities or combinations ofentities.

In some cases, quotas for network data usage may be established andmaintained by the network providers themselves. Thus, information aboutthe data quotas may be stored in a the back-end computer server of thenetwork provider, and in step 603, the client device 500 may contact theappropriate back-end computer server to request the appropriate networkdata quota for the entity (or entities) that requested the videoresource, as well as the current status of the entity's network usagemeasured against the quota within the current time period. In othercases, data quotas for various communication networks may be establishedby and/or stored and maintained directly on the client device 500, orother local device (e.g., an STB or wireless modem installed at thelocation 107 from which the video request was made). In these cases, theclient device 500 need not contact any other remote server to retrievethe network data quota information in step 603, but instead may retrievethe appropriate quotas (and current status of those quotas) from its ownstorage or a local device based on the entity requesting the video andthe network over which the video was requested.

In step 604, the client device 500 may determine whether or not topermit the downloading or streaming of the video requested in step 601,based on the amount of data required to download or stream the requestedvideo (step 602) and based on the data quotas determined for therequesting entity over the applicable network (step 603). In someembodiments, the client device 500 may simply compare the requiredamount of data to download/stream the requested video to the appropriatenetwork data quota. If the required amount of data will exceed theentity's network data quota, then the client device 500 might preventthe retrieval of the requested video resource, as shown in step 605.Alternatively, the client device 500 may present a warning notificationvia a user interface on the client device 500, and may require userconfirmation via the user interface before proceeding with the retrievalof the requested video resource, as shown in step 606.

In other embodiments, the client device 500 may compare the amount ofdata required to stream/download the video to multiple differentthresholds. For instance, if the required amount of data would exceedthe entity's quota, then the client device 500 may prevent the retrievalin step 605. However, if the required amount of data would not exceedthe entity's quota, but would approach the quota and/or would put theentity on track for exceeding the quota within the time period to whichthe quota applies, then the client device 500 may present the warningnotification in step 606. Alternatively, if the amount of data requiredto stream/download the video would neither exceed nor approach theentity's network quota, then the client device 500 may continue with theretrieval of the requested video resource in step 607, without anyadditional confirmation or input from the user. Although this exampleillustrates three possible processing paths following the evaluation instep 604 (i.e., and thus at least two different thresholds and/ordeterminations based on the estimated data amount are performed in step604), it should be understood that other implementations may allow foronly two possible processing paths (e.g., where only single thresholdand/or determination may be evaluated in step 604), such as a singledetermination between the prevent 605 and allow 607 paths, or a singledetermination between the confirm 606 and allow 607 paths, etc. In stillother implementations, the client device 500 may be configured to allowfor more than three possible processing paths 605-607, wherein differentprocessing paths correspond to different levels/types of warnings,different user options for the video retrieval (e.g., partial retrieval,changing network or entity, different required authorizations (e.g.,parental, admin, and/or user, etc.) and the like.

Referring now to FIGS. 7A and 7B, two user interface screens are shownillustrative of the possible processing paths that a client device 500may perform in response to a comparison in step 604 between a determinedamount of data required to download or stream a requested video, and oneor more data quotas associated with the requesting entity and therelevant communication network(s). FIG. 7A, for example, shows aconfirmation screen 700 a, generated in step 606, in which the user ispresented with a warning notification indicating that the amount of datarequired to download or stream the requested video will approach amonthly household data quota. In this example, the user of a clientdevice 500 has selected the movie “Casablanca” for streaming ordownloading. Within the confirmation screen 700 a provided in responseto the movie selection, region 710 a is displayed to provide informationabout the movie and/or an image or short video preview of the selectedmovie. In region 712 a, the client device 500 has determined andpresented the estimated runtime of the selected movie, and thecorresponding estimated data usage, as described in step 602. In region714 a, the client device 500 has compared the estimated data usage thatwill be required to retrieve the movie, to one or more network dataquotas, and presented an appropriate warning to the user, as describedin steps 603 and 604. As shown in this example, the client device 500has determined or retrieved both the network data quota, as well as thecurrent network usage status against the quota within the current month,in order to estimate how much of the quota will remain if the userproceeds with retrieval of this movie. The network data quota in thiscase is indicated as a household quota, and thus may be associated withan individual network provider account, or a particular location 107 orLAN. However, as discussed above, in other examples the network dataquota may correspond to an individual/personal data quota that is tiedto a particular user, or a device data quota that is tied to aparticular client device 500. Additionally, although the communicationnetwork to which the quota applies is not identified in this example,confirmation screen 700 a may be presented in response the client device500 detecting a data quota warning relating to any of the communicationnetworks discussed herein (e.g., IP-based network usages provided by anInternet provide, satellite network usage provided by a satellitetelevision provider system, cable television network usage provided by acable television provider system, cellular network usage provided by acellular/mobile data provider, LAN usage monitored and controlled by alocal LAN router or modem with a household or office location 107,etc.). Finally, the confirmation screen 700 a includes a number ofoptions 716 a, allowing the user to proceed with streaming the video,download the video for later viewing, or cancel the request in view ofthe network data quota warning 714 a.

FIG. 7B shows a retrieval error screen 700 b, generated in step 605, inwhich the user is presented with a notification indicating that therequested video resource cannot be downloaded or streamed, because theamount of data required to download or stream the requested video willexceed the user's personal weekly data quota. In this example, the userof a client device 500 has selected the movie “2001: A Space Odyssey”for streaming or downloading. Within the error screen 700 b provided inresponse to the movie selection, region 710 b is displayed to provideinformation about the movie and/or an image or short video preview ofthe selected movie. In region 712 b, the client device 500 hasdetermined and presented the estimated runtime of the selected movie,and the corresponding estimated data usage, as described in step 602. Inregion 714 b, the client device 500 has compared the estimated datausage that will be required to retrieve the movie, to one or morenetwork data quotas, including a personal weekly data quota associatedwith the individual user that requested the movie, as described in steps603 and 604. Upon determining that the user's personal weekly data quotawould be exceeded by the downloading or streaming of the movie, theclient device 500 may be configured generate and present an errornotification 714 b indicating that the requested movie cannot bestreamed or downloaded. Additionally, the error screen 700 b provides anumber of options 716 b allowing the user to change the currentlylogged-in user (e.g., so that the network data usage may be applied to adifferent user's quota), to change the communication network (e.g., sothat the movie may be retrieved via a different network where the samedata quotas might not apply), or to cancel the request.

Referring now to FIG. 8, another flow diagram is shown illustrating anexample process of managing ongoing video streaming by a client device500, based on ongoing and updated calculations of estimated datarequirements and data allocation limits. Certain of the steps 801-808 inthis example process may be similar or identical to the steps 601-607 ofFIG. 6, discussed above. Additionally, like the steps of FIG. 6, steps801-808 in FIG. 8 may be performed by a client computing device 500(e.g., client devices 106, 206, 350/360, etc.). However, while FIG. 6relates to initial requests to stream or download video resources to aclient device 500, FIG. 8 relates to steps performed during a videostreaming process which is in progress and ongoing at the client device500. Thus, as discussed in more detail below, FIG. 8 provides theadditional functionality of revising data usage estimates during a videostreaming process, and performing corresponding updated calculations tothe applicable data quotas over the streaming network(s).

In step 801, the client device 500 is in the process of receiving anongoing streaming video from a remote server or storage location, overone or more communication networks. As discussed above in FIG. 6, theclient device 500 streaming the video in this example may be any of thetypes of client devices 500 discussed herein, such as personal computingdevices, mobile devices, set-top boxes, etc. Additionally, the video maybe streaming from any number of remote servers/content libraries, overIP-based networks, television provider networks, cellular network, etc.

In step 802, during the ongoing video streaming process, the clientdevice 500 may detect a change in one or more characteristics of thevideo streaming process. One example of a change that may be detected bythe client device 500 in step 802 is a change in the bit rate andquality of the video being streamed. In adaptive bit rate streaming, forexample, upshifts in the bit rate of the transmitted video segmentscorrespond to higher quality video, but may also increase the estimatedamount of data that will be required to stream the remaining portion ofthe video. Similarly, downshifts in bit rate and video quality maydecrease the estimated amount of data that will be required to streamthe remaining portion of the video. Bit rate upshifts or downshifts maybe initiated by the video player application on the client device 500,by the back-end server streaming the video, and/or by the networks orother intermediary devices. Regardless of which component initiates abit rate shift, or why, the shift may be detectable to the client device500, and the detection of such a shift in step 802 may trigger theperformance of steps 803-808, discussed below.

Another example of a video streaming change that may be detected by theclient device 500 in step 802 is the movement of the client device 500from one streaming network to another. For example, a user streaming avideo to their smart phone 500 via a first cellular network may arrivehome (or to another location) while the video is streaming, at whichpoint the user's phone 500 may connect to an available WiFi connectionto continue the streaming over the local WiFi network rather than thecellular network. Such changes in the communication networks used tostream the video may affect which quotas for network data usage that thesubsequent streaming will apply to, and thus a streaming network changedetected in step 802 also may trigger the performance of steps 803-808.

Yet another example of a video streaming change that may be detected bythe client device 500 in step 802 is the user skipping around duringplayback of the streaming video. For instance, if a user beginsstreaming of a 120 minute movie, but then quickly jumps ahead to watchonly the final 20 minutes of the movie, then the estimated data usagefor streaming the video may be decreased accordingly. Similarly, if theuser is nearing the end of a streaming video, and then jumps back tobegin streaming from the beginning, then the estimated data usage forstreaming the video may be increased accordingly.

Additionally, although these examples relate to updating the data usageestimates and network data quota calculations based on the detection ofa change in the video streaming process, in other examples the clientdevice 500 may be configured to updating its data usage and network dataquota calculations in steps 803-808 even if no video streaming change isdetected. For instance, in some embodiments, updating of data usageestimates (step 803), network data quotas and remaining data amounts(step 804), and evaluating the updated data to perform the correspondingaction (steps 805-808) may be performed on a periodic basis during anongoing video streaming process (e.g., every 5 minutes, every 10minutes, every 30 minutes, every 60 minutes, . . . , etc.), even ifthere is no change detected in the streaming conditions in step 802.

In step 803, the client device 500 may determine an updated estimate ofthe amount of data required to be transmitted over the network tocomplete to streaming of the current video. Thus, the process ofperforming step 803 may be similar or identical to that of step 602,discussed above. However, within step 803, the client device 500 maytake into account additional factors, for example, reducing the updateddata estimate based on the portion of the video that has already beenstreamed, as well as taking into account any changes in the streamingprocess or conditions detected in step 802 (e.g., increased or decreasedstreaming bit rate, additional security/network overhead, etc.), and/ortransmission performance data based on the portion of the video alreadystreamed (e.g., adjusting the estimated transmission efficiency based onInternet traffic levels, weather interference with satellitetransmissions, etc.).

In step 804, the client device 500 may determine updated data allocationlimits/data quotas associated with the combination of the streamingnetwork(s) and the entities (e.g., individual users, devices, locations,etc.) associated with the video streaming process. Thus, the process ofperforming step 804 may be similar or identical to that of step 603,discussed above. In some cases, the updated data quotas determined instep 804 may correspond to entirely different data quotas then thosedetermined in step 603, for example, if the communication network usedto streaming the video changes during the streaming process, asdiscussed above. Additionally, in some examples the entities associatedwith the streaming process (e.g., switching the streaming to a differentuser account, a different client device, etc.) may change during thestreaming process, and thus different network data quotas may apply. Inother cases, even if the network data quotas determined in step 804 arethe same quotas as those determined in step 603 (e.g., indicating thatthe same combination of entities and networks), the current data usagestatus of those quotas still may be different in step 804, based on theamount of data transmitted so far during the video streaming and/or anyother data usage applicable to the same quota during that time.

In step 805, the client device 500 may determine whether or not topermit the continued streaming of the video, or to interrupt and/or stopthe streaming process, based on the updated estimates of the amount ofdata required to stream the remaining portions of the video (step 803)and the updated network data quota/usage determinations (step 804).Thus, the process of performing step 805 may be similar or identical tothat of step 604, discussed above. Specifically, in this example, basedon the comparison of the updated streaming data estimates to the datastill available within the applicable data quotas, the client device 500may interrupt the video streaming process in step 806, may generate andpresent a warning notification that allows the user to either stop orcontinue streaming the video in step 807, or may continue the streamingprocess without any interruption or notification to the user in step808.

Although the above examples relate to managing video streaming anddownloading based on evaluations of network data usage quotas, it shouldbe understood that similar techniques may be implemented based onevaluations of any other limitations of computing resources that may beeffected by video streaming, downloading, and playback. For example,FIGS. 9 and 10A-10B, discussed below, illustrate similar techniques formanaging video streaming and playback based on evaluations of thecurrent battery life of the client device 500. In still other examples,a particular user and/or a particular client device 500 may beallocations limits on other types of computing resources, such as memoryusage, processing capacity, overall screen time usage, etc., and similartechniques to those described herein may be performed based on usageestimates for each of these different types of computing resources.

Referring now to FIG. 9, another flow diagram is shown illustrating anexample process of handling requests at client devices (and inparticular for mobile battery-powered devices) for video streaming anddownloading, based on estimates battery usage requirements and batterylife availability. Certain of the steps 901-907 in this example processmay be similar or identical to the steps 601-607 of FIG. 6, discussedabove. Additionally, like the steps of FIG. 6, steps 901-907 in FIG. 9may be performed by a client computing device 500 (e.g., mobile clientdevice 106 or 206).

In step 901, a request is initiated at a mobile device 500 to streamand/or play a video resource. In some cases, the request in step 901 maybe similar or identical to that of step 601, discussed above. Asdiscussed above in FIG. 6, the mobile device 500 receiving and handlingthe request in this example may be any of the types of mobile devices500 discussed herein, such as laptop or tablet computers, smart phones,portable gaming systems, human-wearable devices, etc. Additionally, thevideo may be requested from any number of remote servers/contentlibraries, over IP-based networks, television provider networks,cellular network, etc. However, while the video request discussed abovein FIG. 6 relates to transmission of the video resource (e.g., streamingor downloading from a remote server), the video request in step 901relates to execution/playback of the video resource (e.g., eitherstreaming/playing a video from a remote server, or playing a locallystored video resource on the mobile device 500) on a mobile device 500that is currently not charging and operating on battery power.

In step 902, the mobile device 500 may determine an estimate for theamount of usage/output for the battery 560 of the mobile device 500,that will be required to stream and/or playback the video resourcerequested in step 901. In some examples, the estimated amount of batteryusage may be calculated based on the length of the requested video timesthe battery discharge rate associated with video playback on the mobiledevice 500. In some cases, the mobile device 500 may assume apredetermined battery discharge rate for the calculation in step 902,based on the device type, video player application, screen size,graphics processors, and other hardware-specific characteristics of themobile device 500. In other cases, the mobile device 500 may determine adischarge rate of the battery 560 associated with video playbackempirically based on battery data collected during previous videoplayback processes, and/or based on additional factors such asenvironmental conditions and current device settings.

For example, in various embodiments, the mobile device 500 may calculatean estimated battery discharge rate in step 902 to stream and/or playthe requested video resource, based in part on device settings such asthe current screen brightness, video window size and/or videopresentation quality, sound output volume and quality, and the like. Insome cases, the mobile device 500 may use sensors 516 measure one ormore environmental conditions (e.g., current ambient temperature,battery temperature, ambient light, etc.) which may affect the batterydischarge rate. Additionally or alternatively, sensors 516 can detectthe status of the battery 560 (e.g., current discharge rate). Over time,the mobile device 500 may detect that its battery 560 has degraded,reducing the battery discharge efficiency and battery life.Additionally, the mobile device 500 may determine different batterydischarge rates for video streaming from a remote location, versus videoplayback of local video content.

Further, the battery discharge rate determined in step 902 may be basednot only on the discharge rate associated with video streaming/playback,but also based on any other processes currently executing or scheduledon the mobile device 500 which be identified as battery-intensive orthat may otherwise affect the battery discharge rate during streamingand/or playback of the requested video. For instance, if mobile device500 has several other applications currently open and/or is performingadditional resource-intensive tasks at the time the video request isreceived, then a higher battery discharge rate may be determined in step902, in order to account for the additional applications/processes thatthe mobile device is performing concurrently with the video streamingand/or playback tasks.

In step 903, the mobile device 500 may determine the current status ofits battery 560 (e.g., current percentage capacity and/or estimatedbattery life remaining, etc.), along with an anticipated charging statusfor the mobile device 500. The determination of the current batterystatus of the mobile device 500 may be correspond to a straightforwardoperating request to a battery monitor feature of the mobile operatingsystem, and the output of which may be expressed in percentage, time,and/or power capacity.

Additionally, in step 903, the mobile device 500 also may estimate theupcoming battery charging opportunities for the mobile device 500, inorder to determine how long until the mobile device 500 is likely to becharged. In some embodiments, the mobile device 500 may access devicecharging log data and identify patterns in device charging to determinethe next time that the device 500 is likely to be charged. For example,if the device charging data stored by the mobile device 500 indicatesthat the user charges the device 500 every night between 9 pm and 10 pm,the mobile device 500 may determine a next charging time estimate basedon this data. Additionally or alternatively, the mobile device 500 mayaccess one or more additional data source to aid in the prediction ofthe next estimated charging time for the device. For instance, themobile device 500 may access the user's current calendar data andanalyze the upcoming scheduled appointments, times, and locations inorder to predict when the device might next be charged. In otherexamples, the mobile device 500 may use location data (e.g., via GPSreceiver 570, or by detecting the availability of particular wirelessnetworks, etc.), travel/motion data, and the like, to predict the user'scurrent location and their destination (e.g., driving home or to theoffice, traveling by air or train to a different city, etc.) and to makea corresponding time prediction regarding when the user will arrive atthe destination. For instance, if the mobile device 500 determines basedon calendar data, network data, location/movement data, or the like,that the user is just taking off on a 3-hour flight to the user's homecity, then the mobile device 500 may estimate a next chargingopportunity in 4 hours and 30 minutes (based on the flight time,transition time, and driving distance/time to the user's home, etc.).

In step 904, the mobile device 500 may determine whether or not topermit the streaming and/or playback of the video requested in step 901,based on the estimation of battery usage required to stream/play therequested video determined in step 902, and based on the current batterystatus and/or anticipated charging opportunity data determined in step903. Thus, the process of performing step 904 may be similar to that ofstep 604, discussed above. For example, in some embodiments, the mobiledevice 500 may simply compare the estimated amount of battery lifeneeded to stream/play the requested video to the current battery life ofthe mobile device 500. If the required battery life exceeds theavailable battery life, then the mobile device 500 might prevent theretrieval of the requested video resource, as shown in step 905.Alternatively, the mobile device 500 may present a warning notificationvia a user interface on the mobile device 500, and may require userconfirmation via the user interface before proceeding with the videostreaming/playback of the requested video resource, as shown in step906.

In other embodiments, the mobile device 500 may compare the estimationof battery usage required to stream/play the requested video to multipledifferent thresholds. For instance, if the required amount of batterycapacity would exceed the available battery life, then the mobile device500 may prevent the video streaming/playback in step 905. However, ifthe required amount of battery capacity would not exceed the currentbattery life of the device, but would approach it within a predeterminethreshold, then the mobile device 500 may present a warning notificationin step 906. Alternatively, if the available battery life far exceedsthe required amount of battery capacity to stream/play the requestedvideo, or if the mobile device 500 determines that the device is likelyto be charged before running out of battery life, then the mobile device500 may be permitted to continue with the streaming and/or playback ofthe requested video resource in step 907, without any additionalconfirmation or input from the user. Although this example illustratesthree possible processing paths following the evaluation in step 904, itshould be understood more or less determinations/processing paths may beused in other examples, corresponding to different levels/types ofwarnings, different user options for the video streaming/playback,different required authorizations, and the like.

Referring now to FIGS. 10A and 10B, two additional user interfacescreens are shown illustrative of the possible processing paths that amobile device 500 may perform in response to a comparison in step 904between a required amount of battery capacity to stream or play arequested video, and the current battery life of the mobile device 500.FIG. 10A, for example, shows a first confirmation screen 1000 a,generated in step 906, in response to a user's initial request to beginstreaming and/or playing a movie on the mobile device 500. In thisexample, the user is presented with a warning notification indicatingthat the amount of battery data required to stream/play the requestedvideo will approach (but not exceed) the estimated battery life of themobile device 500. In this example, the user of a mobile device 500 hasselected the movie “Casablanca” for streaming or downloading. Within theconfirmation screen 1000 a provided in response to the movie selection,region 1010 a is displayed to provide information about the movie and/oran image or short video preview of the selected movie. In region 1012 a,the mobile device 500 has determined and presented the estimated runtimeof the selected movie, and the corresponding estimated battery usage, asdescribed in step 902. In region 1014 a, the mobile device 500 hascompared the estimated battery usage that will be required to stream orplay the movie, to the current battery life/status of the mobile device500, and presented an appropriate warning to the user, as described insteps 903 and 904. As shown in this example, the mobile device 500 hasdetermined how much of the mobile device's battery life is likely toremain if the user continues with streaming/playing this movie. Finally,the confirmation screen 1000 a includes a number of options 1016 a,allowing the user to proceed with streaming/playback of the video, todownload the video for later viewing, or cancel the request in view ofthe battery warning 1014 a.

FIG. 10B shows a shows a second confirmation screen 1000 b, that may begenerated in a subsequent execution of step 906 performed during anongoing video streaming/playback process. Using similar techniques tothose discussed above in FIG. 8, the estimations of the battery usagerequired to stream/play a requested video, as well as the determinationsof the current battery life of the mobile device and anticipatedcharging status may be performed multiple times before and/or during thevideo streaming/playback processes. Similar to the discussion above instep 802, some or all of the steps 902-907 may be executed multipletimes, either periodically or in response to the detection of particularchanges (e.g., changes to estimated video playback time, changes tobattery discharge rate, etc.) during the video streaming/playbackprocess. Thus, the second confirmation screen 1000 b shown in FIG. 10Bmay correspond to a warning notification generated by step 906 during anongoing video streaming/playback process. In this example, the user ofthe mobile device 500 has selected the movie “2001: A Space Odyssey” forremote streaming or playback from local storage. Within the confirmationscreen 1000 b, region 1010 b is displayed to provide information aboutthe movie and/or an image or short video preview of the movie beingwatched. In region 1012 b, the mobile device 500 has determined andpresented an updated estimate of the remaining runtime of the movie, thecurrent battery status of the mobile device, and the correspondingestimated battery usage, as described in step 902. In region 1014 b, themobile device 500 has compared the updated estimate of the battery usagethat will be required to stream or play the remaining portion of themovie, to the current updated battery life/status of the mobile device500, and presented an appropriate warning to the user, as described insteps 903 and 904. As shown in this example, the mobile device 500 hasgenerated an updated estimate indicated that the current battery life ofthe mobile device 500 is likely to be sufficient to complete thestreaming/playback of the current movie. Finally, the confirmationscreen 1000 b includes a number of options 1016 b, allowing the user tostop the current playback of the movie, continue watching the movie, oraccess a battery/power manager application on the mobile device 500,through which the user may potentially configure the device settingsand/or close currently executing processes in order to increase thebattery life estimate.

Additionally, although the examples described herein relating tomanaging video downloading and streaming based on data allocationlimits, and managing video streaming and playback based on battery usageestimates have been described separately, it should be understood thatthis techniques and embodiments may be combined. For example, a videostreaming request from a mobile device 500 may initiate both theprocesses illustrated in FIG. 6 and in FIG. 9, and the subsequentactions taken or notifications presented by the mobile device 500 may bebased on the analyses of both data usage and battery usage, along withany other device resource management functionality performed inconnection with the same video downloading, streaming, and playbackprocesses.

The methods, systems, and devices discussed above are examples. Variousconfigurations may omit, substitute, or add various procedures orcomponents as appropriate. For instance, in alternative configurations,the methods may be performed in an order different from that described,and/or various stages may be added, omitted, and/or combined. Also,features described with respect to certain configurations may becombined in various other configurations. Different aspects and elementsof the configurations may be combined in a similar manner. Also,technology evolves and, thus, many of the elements are examples and donot limit the scope of the disclosure or claims. In some embodiments,the entirety of one or more programs of interest may be recorded, andhighlights within each program may be marked so that the user maydirectly skip to one highlight at a time.

Specific details are given in the description to provide a thoroughunderstanding of example configurations (including implementations).However, configurations may be practiced without these specific details.For example, well-known circuits, processes, algorithms, structures, andtechniques have been shown without unnecessary detail in order to avoidobscuring the configurations. This description provides exampleconfigurations only, and does not limit the scope, applicability, orconfigurations of the claims. Rather, the preceding description of theconfigurations will provide those skilled in the art with an enablingdescription for implementing described techniques. Various changes maybe made in the function and arrangement of elements without departingfrom the spirit or scope of the disclosure.

Also, configurations may be described as a process which is depicted asa flow diagram or block diagram. Although each may describe theoperations as a sequential process, many of the operations can beperformed in parallel or concurrently. In addition, the order of theoperations may be rearranged. A process may have additional steps notincluded in the figure. Furthermore, examples of the methods may beimplemented by hardware, software, firmware, middleware, microcode,hardware description languages, or any combination thereof. Whenimplemented in software, firmware, middleware, or microcode, the programcode or code segments to perform the necessary tasks may be stored in anon-transitory computer-readable medium such as a storage medium.Processors may perform the described tasks.

Having described several example configurations, various modifications,alternative constructions, and equivalents may be used without departingfrom the spirit of the disclosure. For example, the above elements maybe components of a larger system, wherein other rules may takeprecedence over or otherwise modify the application of the invention.Also, a number of steps may be undertaken before, during, or after theabove elements are considered. Accordingly, the above description doesnot bound the scope of the claims.

What is claimed is:
 1. A video playback client device, comprising: oneor more processors; and memory comprising one or more computer-readablestorage media coupled to the one or more processors, the storage mediastoring therein computer executable instructions, which, when executedby the one or more processors, causes the video playback client deviceto: receive a request, via a user input of the video playback clientdevice, to retrieve a particular video resource from a plurality ofavailable video resources; determine a required data receptioncharacteristic for the video playback client device to retrieve theparticular video resource; determine, responsive to the request, acurrent hardware resource status of one or more hardware resources ofthe video playback client device used for video retrieval and/orplayback operations; determine a predicted impact to the one or morehardware resources resulting from retrieval and/or playback of theparticular video resource by the video playback client device inaccordance with the required data reception characteristic; and controlthe retrieval and/or playback of the particular video resource by thevideo playback client device responsive to and according to comparingthe predicted impact with the current hardware resource status.
 2. Thevideo playback device of claim 1, wherein controlling the retrievaland/or playback comprises preventing the retrieval and/or playback ofthe particular video resource by the video playback client deviceresponsive to and according to determining that the current hardwareresource status is incompatible with the predicted impact.
 3. The videoplayback device of claim 1, wherein controlling the retrieval and/orplayback comprises outputting a user notification indicatinginsufficiency of the one or more hardware resources of the videoplayback client device for the video retrieval and/or playback of theparticular video resource responsive to and according to determiningthat the current hardware resource status is incompatible with thepredicted impact.
 4. The video playback device of claim 3, wherein theuser notification further prompts user interaction to stop the videoretrieval and/or playback, continue the video retrieval and/or playback,or access an application by which to manage the one or more hardwareresources determined to have the current hardware resource status thatis incompatible with the predicted impact.
 5. The video playback deviceof claim 1, wherein controlling the retrieval and/or playback comprisesinitiating the retrieval and/or playback of the particular videoresource by the video playback client device responsive to and accordingto determining that the current hardware resource status is compatiblewith the predicted impact.
 6. The video playback device of claim 1,wherein the required data reception characteristic indicates an amountof time required for the video playback client device to retrieve theparticular video resource via the communication network.
 7. The videoplayback device of claim 1, wherein the required data receptioncharacteristic indicates an amount of data required for the videoplayback client device to retrieve the particular video resource via thecommunication network.
 8. The video playback device of claim 1, whereinthe current hardware resource status indicates life of one or morebattery resources of the video playback client device available for thevideo retrieval and/or playback operations.
 9. The video playback deviceof claim 8, wherein determining the current hardware resource statuscomprises computing the life of the one or more battery resourcesaccording to an estimated battery discharge rate.
 10. The video playbackdevice of claim 9, wherein determining the current hardware resourcestatus further comprises computing an estimated battery discharge ratebased on one or more current device settings.
 11. The video playbackdevice of claim 9, wherein: determining the current hardware resourcestatus further comprises estimating an upcoming battery chargingopportunity; and computing the life of the one or more battery resourcesis further according to the estimated upcoming battery chargingopportunity.
 12. The video playback device of claim 1, wherein thecurrent hardware resource status indicates an availability of the memoryfor the video retrieval and/or playback operations.
 13. The videoplayback device of claim 1, wherein the current hardware resource statusindicates an availability of the one or more processors for the videoretrieval and/or playback operations.
 14. The video playback device ofclaim 1, wherein the request is to retrieve a particular video resourcefrom a remote video content library available over a communicationnetwork.
 15. The video playback device of claim 1, wherein the requestis to retrieve a particular video resource from local video storage ofthe video playback client device.
 16. A method of managing video contentstreaming and downloading at a client device, the method comprising:receiving a request, via a user input of the video playback clientdevice, to retrieve a particular video resource from a plurality ofavailable video resources; determining a required data receptioncharacteristic for the video playback client device to retrieve theparticular video resource; determining, responsive to the request, acurrent hardware resource status of one or more hardware resources ofthe video playback client device used for video retrieval and/orplayback operations; determining a predicted impact to the one or morehardware resources resulting from retrieval and/or playback of theparticular video resource by the video playback client device inaccordance with the required data reception characteristic; andcontrolling the retrieval and/or playback of the particular videoresource by the video playback client device responsive to and accordingto comparing the predicted impact with the current hardware resourcestatus.
 17. The method of claim 16, wherein controlling the retrievaland/or playback comprises one of: preventing the retrieval and/orplayback of the particular video resource by the video playback clientdevice responsive to and according to determining that the currenthardware resource status is incompatible with the predicted impact;outputting a user notification indicating insufficiency of the one ormore hardware resources of the video playback client device for thevideo retrieval and/or playback of the particular video resourceresponsive to and according to determining that the current hardwareresource status is incompatible with the predicted impact; or initiatingthe retrieval and/or playback of the particular video resource by thevideo playback client device responsive to and according to determiningthat the current hardware resource status is compatible with thepredicted impact.
 18. The method of claim 16, wherein the required datareception characteristic indicates an amount of time and/or an amount ofdata required for the video playback client device to retrieve theparticular video resource via the communication network.
 19. The methodof claim 16, wherein the current hardware resource status indicates acapacity of the memory and/or the one or more processors as availablefor the video retrieval and/or playback operations.
 20. The method ofclaim 16, wherein the current hardware resource status indicates a lifeof one or more battery resources of the video playback client deviceavailable for the video retrieval and/or playback operations computedaccording to an estimated battery discharge rate.